package com.boot2.core.model;

import com.boot2.core.LongBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import javax.persistence.MappedSuperclass;

/**
 * @ClassName: AdminLog
 * @description: 【管理员日志】 model
 * @author zhangweilin
 * @date 2019-3-18 11:32:01
 *
 */
@ApiModel("抽象日志")
@Data
@MappedSuperclass
@ToString(callSuper = true)
public class AbstractLog extends LongBaseEntity {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	public AbstractLog() {
		super();
	}

	public AbstractLog(Long id) {
		this.id = id;
	}

	/**
	 *  @param isInit  是否初始化基础信息
	 */
	public AbstractLog(boolean isInit) {
		super(isInit);
	}

	/**
	 * 目标对象主键id
	 */
	@ApiModelProperty(value = "目标对象主键id")
	private String objectId;

	/**
	 * 手机号码
	 */
	@ApiModelProperty(value = "用户手机号码")
	private String mobilePhone;

	/**
	 * 应用名称
	 */
	@ApiModelProperty(value = "服务应用名称")
	private String serverAppName;

	/**
	 * 服务应用版本
	 */
	@ApiModelProperty(value = "服务应用版本")
	private String serverAppVersion;

	/**
	 * 日志模块
	 */
	@ApiModelProperty(value = "日志模块名称,取自Controller类上注释")
	private String moduleName;

	/**
	 * 功能简介
	 */
	@ApiModelProperty(value = "功能简介")
	private String funcName;
	/**
	 * 功能描述 
	 */
	@ApiModelProperty(value = "功能描述")
	private String funcDesc;
	/**
	 * 类名, 即日志对应的类名
	 */
	@ApiModelProperty(value = "类名, 即日志对应的类名")
	private String className;
	/**
	 * 方法名，即日志对应的方法名
	 */
	@ApiModelProperty(value = "方法名，即日志对应的方法名")
	private String methodName;
	/**
	 * 参数，即日志对应的传过来的全部参数及值
	 */
	@ApiModelProperty(value = "参数，即日志对应的传过来的全部参数及值")
	private String param;
	/**
	 * 异常信息，如果没有异常，则为空
	 */
	@ApiModelProperty(value = "异常信息，如果没有异常，则为空")
	private String exceptionMessage;

	/**
	 * 日志发生IP
	 */
	@ApiModelProperty(value = "日志发生IP")
	private String ip;

	/**
	 * 日志发生国家
	 */
	@ApiModelProperty(value = "日志发生国家")
	private String country;

//	/**
//	 * 日志发生省份
//	 */
//	@ApiModelProperty(value = "日志发生省份")
//	private String province;

	/**
	 * 日志发生城市
	 */
//	@ApiModelProperty(value = "日志发生城市")
//	private String city;

	/**
	 * 日志发生所在网络的运营商
	 */
	@ApiModelProperty(value = "日志发生所在网络的运营商")
	private String carrier;

	/**
	 * 设备品牌
	 */
	@ApiModelProperty(value = "设备品牌")
	private String deviceBrand;

	/**
	 * 设备序列号
	 */
	@ApiModelProperty(value = "设备序列号")
	private String deviceSn;

	/**
	 * 设备版本号
	 */
	@ApiModelProperty(value = "设备版本号")
	private String osVersion;

	/**
	 * 设备操作系统类型   0: 安卓  1:ios,参考OsEnum.Type
	 */
	@ApiModelProperty(value = "设备操作系统类型   0: 安卓  1:ios,参考OsEnum.Type")
	private String osType;

	/**
	 * 设备所安装的对应的app版本号
	 */
	@ApiModelProperty(value = "设备所安装的对应的app版本号")
	private String appVersion;


//	/**
//	 * 设备端请求时间
//	 */
//	@ApiModelProperty(value = "设备端请求时间")
//	private Date createTime;


	/**
	 * 所在省份id,关联position_province.id
	 */
	@ApiModelProperty(value = "所在省份id,关联position_province.id")
	private Long provinceId;

	/**
	 * 省名称
	 */
	@ApiModelProperty(value = "省名称")
	private String provinceName;

	/**
	 * 城市id,关联position_city.id
	 */
	@ApiModelProperty(value = "城市id,关联position_city.id")
	private Long cityId;

	/**
	 * 城市 名称
	 */
	@ApiModelProperty(value = "城市 名称")
	private String cityName;


	/**
	 * 区县id,关联position_district.id
	 */
	@ApiModelProperty(value = "区县id,关联position_district.id")
	private Long districtId;

	/**
	 * 地区名称
	 */
	@ApiModelProperty(value = "地区名称")
	private String districtName;

	/**
	 * 详细地址
	 */
	@ApiModelProperty(value = "详细地址")
	private String address;

	/**
	 * 经度
	 */
	@ApiModelProperty(value = "经度")
	private Double longitude;
	/**
	 * 纬度
	 */
	@ApiModelProperty(value = "纬度")
	private Double latitude;

	/**
	 * 坐标系标准类型 1:GCJ02（国测局坐标） 2:BD09（百度墨卡托坐标） 3:BD09ll（百度经纬度坐标）
	 */
	@ApiModelProperty(value = "坐标系标准类型 1:GCJ02（国测局坐标） 2:BD09（百度墨卡托坐标） 3:BD09ll（百度经纬度坐标）")
	private Integer lbsStandardType;

	/**
	 * 当前请求的页面来源
	 */
	@ApiModelProperty(value = "当前请求的页面来源,如果是app，则为所在界面，如果是网页类名称，则为所在页面地址")
	private String pageName;

	/**
	 * 请求来源的agent,用来判断客户端类型
	 */
	@ApiModelProperty(value = "请求来源的agent,用来判断客户端类型")
	private String userAgent;

}
